function labels = labelize(map, data)
  activadas = som_bmus(map, data);
  tam = map.topol.msize;
  unidades = zeros(tam(1)*tam(2), 4);
  %por cada elemento del conjunto anoto en la neurona que clases la
  %activaron.
  for x = 1:length(activadas)
    clase = data.labels(x,:);
    clase_id = 1;
    while ~strcmp(clase, data.label_names(clase_id,:))
        clase_id = clase_id + 1;
    end
    unidades(activadas(x), clase_id) = unidades(activadas(x), clase_id) + 1;
  end
  
  %obtengo la aparición total de cada etiqueta
  apariciones = sum(strcmp(repmat(cellstr(data.label_names)',length(data.labels),1), repmat(cellstr(data.labels),1,4)));
  frecuenciaTotal = zeros(length(unidades), 4);
  %divido por la cantidad de aparaciones para obtener la frecuencia.
  for i = 1:4
      frecuenciaTotal(:,i) = unidades(:,i)/apariciones(i);
  end
  %por cada unidad tomo la etiqueta que mas aparece
  for i = 1:length(unidades)
      maxFreq = max(frecuenciaTotal(i,:));
      if maxFreq > 0
        label_id = find(frecuenciaTotal(i,:) == maxFreq);
        label = cellstr(data.label_names(label_id,:));
        map.labels(i) = label;
      end
  end
  labels = map.labels;

end